home *** CD-ROM | disk | FTP | other *** search
/ Developer Helper 1: Phil & Dave's Excellent CD / Excellent CD HFS.raw / Moof / Goodies / HyperCard Goodies / HyperCard Dev. ToolKit / Serial & MacinTalk XCMDs / resetPort.p < prev    next >
Text File  |  1987-07-15  |  2KB  |  74 lines

  1. {$R-}
  2.  
  3. (*
  4.     resetSPort(port number, setting) -- Reset the serial port driver.
  5.  
  6.     To compile and link this file using Macintosh Programmer's Workshop,
  7.  
  8.     pascal -w resetPort.p
  9.     link -m ENTRYPOINT -o HyperCommands -rt XCMD=1 -sn Main=resetSPort resetPort.p.o "{MPW}"Libraries:interface.o
  10.     
  11. *)
  12.  
  13. {$S resetSPort }     { Segment name must be the same as the command name. }
  14.  
  15. unit DummyUnit;
  16.  
  17. interface
  18.  
  19. uses MemTypes, QuickDraw, OSIntf, HyperXCmd;
  20.  
  21. procedure EntryPoint(paramPtr: XCmdPtr);
  22.     
  23. implementation
  24.  
  25. type
  26.  
  27. Str31 = String[31];
  28.  
  29. procedure resetSPort(paramPtr: XCmdPtr); forward;
  30.  
  31. procedure EntryPoint(paramPtr: XCmdPtr);
  32.  
  33.     begin
  34.         resetSPort(paramPtr);
  35.     end;
  36.  
  37. procedure resetSPort(paramPtr: XCmdPtr);
  38.  
  39.     var portNumber: integer;
  40.         setting: integer;
  41.         inPort, outPort: integer;
  42.         str: Str255;
  43.  
  44.     {$I XCmdGlue.inc}
  45.  
  46.     procedure Fail(errMsg: Str255); { set theResult and quit }
  47.         begin
  48.             paramPtr^.returnValue := PasToZero(errMsg);
  49.             exit(resetSPort);
  50.         end;
  51.  
  52.     begin
  53.         if paramPtr^.paramCount <> 2 then Fail('parameter count is not 2');
  54.  
  55.         ZeroToPas(paramPtr^.params[1]^,str);        { First parameter is port number. }
  56.         portNumber := StrToNum(str);
  57.         if (portNumber < 1) or (portNumber > 2) then Fail('invalid port number');
  58.         ZeroToPas(paramPtr^.params[2]^,str);        { Second parameter is setting. }
  59.         setting := StrToNum(str);
  60.  
  61.         if portNumber = 1 then
  62.             begin
  63.                 inPort := -6; outPort := -7;
  64.             end
  65.         else
  66.             begin
  67.                 inPort := -8; outPort := -9;
  68.             end;
  69.         if (SerReset(inPort,setting) <> noErr) or (SerReset(outPort,setting) <> noErr) then
  70.             Fail('SerReset failed');
  71.     end;
  72.  
  73. end.
  74.